package 图书管理项目.Dao;

import 图书管理项目.Admin;
import 图书管理项目.DBUtil;
import 图书管理项目.NomalUser;
import 图书管理项目.User;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class UserDao {
    //主要实现根据用户名找到密码的逻辑即可
    public User selectByName(String name) {
        Connection connection=null;
        PreparedStatement statement=null;
        ResultSet resultSet=null;

        try {
            //1.和数据库建立连接
            connection= DBUtil.getConnection();
            //2.构造SQL语句
            String sql="select * from user where username=?";
            statement=connection.prepareStatement(sql);
            statement.setString(1,name);
            //3.执行SQL语句
            resultSet=statement.executeQuery();
            //用户名是唯一的，所以查到的结果只有 1条或 0条
            if (resultSet.next()) {
                //根据name查找到用户
                //返回一个具体的User对象
                //需要根据当前 User 判断是否为管理员，返回一个 Admin or NormalUser
                boolean isAdmin=(resultSet.getInt("isAdmin")==1);
                User user=null;

                if (isAdmin) {
                    //Admin
                    user= new Admin();
                }else {
                    //NormalUser
                    user=new NomalUser();
                }

                user.setUseId(resultSet.getInt("userId"));
                user.setName(resultSet.getString("username"));
                user.setPassword(resultSet.getString("password"));
                return user;
            }else {
                //没有这个name的用户
                return null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            DBUtil.close(connection,statement,resultSet);
        }
        return null;
    }
}
